/*! \file Driver.h
 *	\brief <write description for Driver.h>
 *
 *	created:	2009/11/12
 *	created:	12:11:2009   16:06
 *	filename: 	c:\src\main\libs\gd\Driver.h
 *	file path:	c:\src\main\libs\gd
 *	file base:	Driver
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _GD_DRIVER_H_
#define _GD_DRIVER_H_

#pragma once

#include <config/Configurable.h>
#include <config/types.h>
#include <core/noncopyable.h>
#include <core/SmartPtr.h>

namespace tt{

namespace app{
class Window;
} //namespace app

namespace gd{

class Device;

class Driver : NonCopyable
{
public:
	Driver(void);
	virtual ~Driver(void);

	SharedPtr<Device> createDevice(const SharedPtr<app::Window>&);

protected:
	virtual SharedPtr<Device> onCreateDevice(const SharedPtr<app::Window>&) = 0;
};

} //namespace gd
} //namespace tt

#endif //_GD_DRIVER_H_